class Rectangle:
    def __init__(self, width, height):
        """构造方法，初始化矩形的宽度和高度"""
        self.width = width
        self.height = height

    def area(self):
        """计算矩形的面积"""
        return self.width * self.height

    def perimeter(self):
        """计算矩形的周长"""
        return 2 * (self.width + self.height)

    @staticmethod
    def is_square(width, height):
        """静态方法，检查给定的尺寸是否构成正方形"""
        return width == height

    @classmethod
    def from_area(cls, area, ratio=1):
        """类方法，根据面积和宽高比创建一个新的矩形实例"""
        width = (area / ratio) ** 0.5
        height = width * ratio
        return cls(width, height)

    def __str__(self):
        """特殊方法，返回矩形的字符串表示形式"""
        return f"Rectangle(width={self.width}, height={self.height})"

    def __repr__(self):
        """特殊方法，返回矩形的正式字符串表示形式"""
        return f"Rectangle({self.width}, {self.height})"

    def _private_method(self):
        """受保护方法，仅在类内部使用"""
        print("This is a protected method.")

    def __very_private_method(self):
        """私有方法，仅在类内部使用"""
        print("This is a very private method.")


# 创建矩形实例
r1 = Rectangle(4, 5)
r2 = Rectangle.from_area(16)

# 计算面积和周长
area_r1 = r1.area()
perimeter_r1 = r1.perimeter()

# 检查是否为正方形
is_square_r1 = Rectangle.is_square(r1.width, r1.height)
is_square_r2 = Rectangle.is_square(r2.width, r2.height)

# 打印字符串表示
str_r1 = str(r1)
repr_r1 = repr(r1)

# 调用受保护方法
r1._private_method()

# 调用私有方法
r1._Rectangle__very_private_method()

